// 这是一个简单的配置验证测试文件
// 可以在开发环境中临时使用来验证数据库配置服务是否正常工作
// 使用完毕后可以删除此文件

using Lzfy_Refund_Service.Services;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace Lzfy_Refund_Service
{
    /// <summary>
    /// 数据库配置验证测试
    /// </summary>
    public class DatabaseConfigurationTest
    {
        /// <summary>
        /// 验证数据库配置服务
        /// </summary>
        public static void ValidateConfiguration()
        {
            // 创建配置
            var configuration = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", optional: false)
                .AddJsonFile("appsettings.Development.json", optional: true)
                .Build();

            // 创建服务
            var services = new ServiceCollection();
            services.AddSingleton<IConfiguration>(configuration);
            services.AddSingleton<IDatabaseConfigurationService, DatabaseConfigurationService>();
            
            var serviceProvider = services.BuildServiceProvider();
            var dbConfig = serviceProvider.GetRequiredService<IDatabaseConfigurationService>();

            // 验证配置
            Console.WriteLine("=== 数据库配置验证 ===");
            Console.WriteLine($"默认连接字符串: {dbConfig.GetDefaultConnection()}");
            Console.WriteLine($"HIS Oracle连接字符串: {dbConfig.GetHisOracleConnection()}");
            Console.WriteLine($"DefaultConnection是否已配置: {dbConfig.IsConnectionConfigured("DefaultConnection")}");
            Console.WriteLine($"HisOracleConnection是否已配置: {dbConfig.IsConnectionConfigured("HisOracleConnection")}");
            Console.WriteLine("=== 验证完成 ===");
        }

        /// <summary>
        /// 测试连接字符串获取
        /// </summary>
        public static void TestConnectionStringRetrieval()
        {
            var configuration = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", optional: false)
                .Build();

            var dbConfig = new DatabaseConfigurationService(configuration);

            // 测试各种场景
            Console.WriteLine("=== 连接字符串获取测试 ===");
            
            // 测试存在的配置
            var defaultConn = dbConfig.GetDefaultConnection();
            Console.WriteLine($"默认连接: {(string.IsNullOrEmpty(defaultConn) ? "未配置" : "已配置")}");
            
            // 测试不存在的配置
            var customConn = dbConfig.GetConnectionString("NonExistentConnection", "自定义默认值");
            Console.WriteLine($"不存在的连接: {customConn}");
            
            Console.WriteLine("=== 测试完成 ===");
        }
    }
}

// 使用示例：
// 在Program.cs的Main方法开始处添加以下代码来验证配置：
// DatabaseConfigurationTest.ValidateConfiguration();
// DatabaseConfigurationTest.TestConnectionStringRetrieval();